package com.simoniu.first;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "TestServlet", value="/test")
public class TestServlet extends HttpServlet {

    public TestServlet() {
        System.out.println("执行TestServlet的构造方法...");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {

        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String data = "测试TestServlet-使用字节流";
        String data2 = "测试TestServlet-使用字符流";

        //设置响应头
        response.setHeader("content-type", "text/html;charset=UTF-8");//通过设置响应头控制浏览器以UTF-8的编码显示数据，如果不加这句话，那么浏览器显示的将是乱码

        //获取指定参数
        String username = request.getParameter("username");
        //用来存储一个对象，也可以称之为存储一个域属性
        request.setAttribute("loginName", username);
        //获取名为xx的域属性
        String loginName = (String) request.getAttribute("loginName");
        System.out.println(loginName);

        //一秒刷新页面一次
        //response.setHeader("refresh","1");
        //5秒后自动跳转到百度主页。
        //response.setHeader("Refresh","5; URL=http://www.baidu.com");
        //设置不使用缓存
        //response.setHeader("Pragma", "No-cache");
        //response.setHeader("Cache-Control", "no-cache");

        //设置contentType
        //注意：这句话必须在getOutputStream或者getWriter之前执行，否则会有中文乱码。
        response.setContentType("text/html;charset=utf-8");
        //设置字符响应流的字符编码为utf-8；
        //response.setCharacterEncoding("utf-8");
        //设置状态码
        //response.setStatus(200);
        /*
         * 注意：getOutputStream和getWriter这两个方法互相排斥，不能同时使用！
         ** */
        //获取字符输出流
        //PrintWriter outer = response.getWriter();
        //获取字节输出流
        OutputStream outputStream = response.getOutputStream();
        //字节流的方式输出内容
        outputStream.write(data.getBytes("utf-8"));
        //字符流的方式输出内容。
        //outer.write("<h1>"+data2+"</h1>");
        //outer.flush();
        //outer.close();
        outputStream.close();
    }

    public void destroy() {
    }
}